package com.laotou99.wmsjjj.wmsjjj.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.laotou99.wmsjjj.wmsjjj.bean.po.StoreKeyPo;

public interface StoreKeyRepository extends JpaRepository<StoreKeyPo, Long>
{
	

}

/*


在 Spring Data JPA 中，`JpaRepository` 接口提供了一种便捷的方式来访问和操作数据库，而不需要直接编写 SQL 语句。它支持方法查询（通过方法名推断查询）、JPQL（Java Persistence Query Language）以及原生 SQL 查询。

如果你需要执行自定义的 SQL 查询，可以通过以下几种方式实现：

### 使用 `@Query` 注解

你可以使用 `@Query` 注解直接在你的 repository 接口中定义查询语句。这个注解允许你指定 JPQL 或者原生 SQL 查询。

#### 使用 JPQL 示例：

```java
public interface UserRepository extends JpaRepository<User, Long> {

    @Query("SELECT u FROM User u WHERE u.email = ?1")
    Optional<User> findByEmail(String email);
}
```

#### 使用原生 SQL 示例：

```java
public interface UserRepository extends JpaRepository<User, Long> {

    @Query(value = "SELECT * FROM USERS u WHERE u.email_address = ?1", nativeQuery = true)
    Optional<User> findByEmailAddress(String emailAddress);
}
```
注意 `nativeQuery = true` 属性指定了这是一个原生 SQL 查询。

### 使用 `EntityManager`

对于更复杂的场景，你可能需要直接使用 `EntityManager` 来创建和执行查询。

首先，在你的 Repository 类中注入 `EntityManager`：

```java
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Repository
public class CustomUserRepository {

    @PersistenceContext
    private EntityManager entityManager;

    public List<User> performCustomSQL() {
        String sql = "SELECT * FROM USERS WHERE status = 'active'";
        Query query = entityManager.createNativeQuery(sql, User.class);
        return query.getResultList();
    }
}
```

### 使用 `JdbcTemplate`

虽然这不是直接与 `JpaRepository` 相关，但 Spring 的 `JdbcTemplate` 是另一种执行 SQL 的好方法，尤其是在你需要执行一些不那么面向对象的操作时。

```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class UserJdbcRepository {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<User> findAllUsers() {
        return jdbcTemplate.query(
            "SELECT * FROM USERS",
            (rs, rowNum) -> new User(rs.getLong("id"), rs.getString("name"), rs.getString("email"))
        );
    }
}
```

### 总结

- **`@Query`**：适用于大多数情况下的简单到中等复杂度的查询需求。
- **`EntityManager`**：当你需要更细粒度控制查询或执行批量操作时非常有用。
- **`JdbcTemplate`**：当处理非实体类的数据或需要更高灵活性时是理想选择。

选择哪种方式取决于你的具体需求和偏好。对于大多数情况，推荐先尝试使用 `@Query` 注解，因为它提供了良好的抽象层次且易于维护。如果遇到限制，则可以考虑其他方法。
 

        ASNPO asnpo = new ASNPO();
        ASNPO asnpo1 = jo1.toJavaObject(ASNPO.class);
        Example<ASNPO> example = Example.of(asnpo1);
        List<ASNPO> findAll = asnRepository.findAll(example);
 
 * */
 